#ifndef _CONFIG_FILE_H
#define _CONFIG_FILE_H

#include <string>
#include <map>
#include <vector>

class ConfigFile
{
public:
	ConfigFile(const std::string& filename);
	~ConfigFile(void);

	bool parse();
	void save();

	const std::string& getFilename() const { return _filename; }

	bool isEmpty() const { return _keys.empty(); }
	bool doesKeyExist(const std::string& name);

	void setKey(const std::string& key, const std::string& value);

	bool getAsBool(const std::string& key);
	std::string getAsString(const std::string& key);
	int getAsInt(const std::string& key);
	float getAsFloat(const std::string& key);
	std::vector<std::string> getAsStringVector(const std::string& key);

private:
	std::string _filename;
	std::string _separators;
	std::map<std::string, std::string> _keys;
};

#endif // _CONFIG_FILE_H